package com.grapro.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public interface UserDao {
    Map<String, Object> loginCheck(int id) throws SQLException;
    Map<String, Object> getUserInfo(int id) throws SQLException;

    boolean updatePassword(int id, String newPassword1, String oldPassword) throws SQLException;

    /**
     * 添加上班打卡下班时间
     *
     * @param arr    上班打卡时间
     * @param userId 打卡人对应的ID
     * @return 添加成功返回true
     * @throws SQLException SQL异常
     */
    boolean clockInInsert(String[] arr, int userId) throws SQLException;

    /**
     * 添加下班打卡下班时间
     *
     * @param arr    下班打卡时间
     * @param userId 打卡人对应的ID
     * @return 添加成功返回true
     * @throws SQLException SQL异常
     */
    boolean clockOUtInsert(String[] arr, int userId) throws SQLException;

    /**
     * 根据上班打卡时间添加下班打卡下班时间
     *
     * @param arr    下班打卡时间
     * @param timeId 打卡人对应的ID
     * @return 添加成功返回true
     * @throws SQLException SQL异常
     */
    boolean clockOUtInsertByIn(String[] arr, int timeId) throws SQLException;

    /**
     * 根据用户名查询对应的用户ID
     *
     * @param username 用户名
     * @return 返回用户Id键值对
     * @throws SQLException SQL异常
     */
    Map<String, Object> getUserId(String username) throws SQLException;

    /**
     * 根据签退时间和用户ID查找签到签到时间对应的timeId
     *
     * @param time 签退时间
     * @return timeId, userId和其值得双边队列
     * @throws SQLException SQL异常
     */
    Map<String, Object> getTimeId(String time, int userId) throws SQLException;

    /**
     *
     * @param parameterMap
     * @return
     * @throws SQLException
     */
    boolean addUser(Map<String, String[]> parameterMap) throws SQLException;
    /**
     * 添加请假加班数据到数据库
     *
     * @param parameterMap 请假加班数据
     * @param userId       用户ID
     * @return 添加成功返回true， 否则返回false
     * @throws SQLException SQL异常
     */
    boolean insertLO(Map<String, String[]> parameterMap, int userId) throws SQLException;

    List<Map<String, Object>> LeaveAndOvertime(int leaveOrOvertimeStatus) throws SQLException;

}
